<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: mets::abstract_search&lt; move_manager_type &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classmets_1_1abstract__search.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classmets_1_1abstract__search-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">mets::abstract_search&lt; move_manager_type &gt; 模板类 参考<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__common.html">Common components</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>An abstract search.  
 <a href="classmets_1_1abstract__search.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="abstract-search_8hh_source.html">abstract-search.hh</a>&gt;</code></p>
<div class="dynheader">
类 mets::abstract_search&lt; move_manager_type &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classmets_1_1abstract__search.png" usemap="#mets::abstract_5Fsearch_3C_20move_5Fmanager_5Ftype_20_3E_map" alt=""/>
  <map id="mets::abstract_5Fsearch_3C_20move_5Fmanager_5Ftype_20_3E_map" name="mets::abstract_5Fsearch_3C_20move_5Fmanager_5Ftype_20_3E_map">
<area href="classmets_1_1subject.html" alt="mets::subject&lt; abstract_search&lt; move_manager_type &gt; &gt;" shape="rect" coords="349,0,688,24"/>
<area href="classmets_1_1local__search.html" title="Local search algorithm." alt="mets::local_search&lt; move_manager_type &gt;" shape="rect" coords="0,112,339,136"/>
<area href="classmets_1_1simulated__annealing.html" title="Search by Simulated Annealing." alt="mets::simulated_annealing&lt; move_manager_type &gt;" shape="rect" coords="349,112,688,136"/>
<area href="classmets_1_1tabu__search.html" title="Tabu Search algorithm." alt="mets::tabu_search&lt; move_manager_type &gt;" shape="rect" coords="698,112,1037,136"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:add8e7e7b063145361775a3b3280a7f13"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a97ca1cddb103101df3f5efd6afa909a3">MOVE_MADE</a> = 0
, <a class="el" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a097dfcc9c9fd4a57815225d689ccd65b">IMPROVEMENT_MADE</a>
, <a class="el" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a89508708b3905bfddc4dc4099cfb5eff">ITERATION_BEGIN</a>
, <a class="el" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a1f828a6d9da2b4b791e4467402690a02">ITERATION_END</a>
, <br />
&#160;&#160;<a class="el" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a76e99386020b09218bc569b6c597548d">LAST</a>
<br />
 }</td></tr>
<tr class="separator:add8e7e7b063145361775a3b3280a7f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:ac8b0d53e92a4c7510f28d35a8d0153dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#ac8b0d53e92a4c7510f28d35a8d0153dd">abstract_search</a> (<a class="el" href="classmets_1_1feasible__solution.html">feasible_solution</a> &amp;<a class="el" href="classmets_1_1abstract__search.html#a81d584dbf1eaf56dc5e122a16abedf7d">working</a>, <a class="el" href="classmets_1_1solution__recorder.html">solution_recorder</a> &amp;<a class="el" href="classmets_1_1abstract__search.html#ac2a0764914a1be2c4e06b9120c9fa7bd">recorder</a>, move_manager_type &amp;moveman)</td></tr>
<tr class="memdesc:ac8b0d53e92a4c7510f28d35a8d0153dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set some common values needed for neighborhood based metaheuristics.  <a href="classmets_1_1abstract__search.html#ac8b0d53e92a4c7510f28d35a8d0153dd">更多...</a><br /></td></tr>
<tr class="separator:ac8b0d53e92a4c7510f28d35a8d0153dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8754f00b5cbd58f4dfb28120d5d7f9f2"><td class="memItemLeft" align="right" valign="top"><a id="a8754f00b5cbd58f4dfb28120d5d7f9f2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a8754f00b5cbd58f4dfb28120d5d7f9f2">abstract_search</a> (const <a class="el" href="classmets_1_1abstract__search.html">abstract_search</a>&lt; move_manager_type &gt; &amp;)</td></tr>
<tr class="memdesc:a8754f00b5cbd58f4dfb28120d5d7f9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">purposely not implemented (see Effective C++) <br /></td></tr>
<tr class="separator:a8754f00b5cbd58f4dfb28120d5d7f9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa70d0d3f2c80939734aef1c38464fb0f"><td class="memItemLeft" align="right" valign="top"><a id="aa70d0d3f2c80939734aef1c38464fb0f"></a>
<a class="el" href="classmets_1_1abstract__search.html">abstract_search</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#aa70d0d3f2c80939734aef1c38464fb0f">operator==</a> (const <a class="el" href="classmets_1_1abstract__search.html">abstract_search</a>&lt; move_manager_type &gt; &amp;)</td></tr>
<tr class="memdesc:aa70d0d3f2c80939734aef1c38464fb0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">purposely not implemented (see Effective C++) <br /></td></tr>
<tr class="separator:aa70d0d3f2c80939734aef1c38464fb0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7eb628da5c538bbe2551de7067bde94f"><td class="memItemLeft" align="right" valign="top"><a id="a7eb628da5c538bbe2551de7067bde94f"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a7eb628da5c538bbe2551de7067bde94f">~abstract_search</a> ()</td></tr>
<tr class="memdesc:a7eb628da5c538bbe2551de7067bde94f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="separator:a7eb628da5c538bbe2551de7067bde94f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c57b09ce6efdb9c3dfc47bb1a38efe9"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a9c57b09ce6efdb9c3dfc47bb1a38efe9">search</a> ()=0  throw (no_moves_error)</td></tr>
<tr class="memdesc:a9c57b09ce6efdb9c3dfc47bb1a38efe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method starts the search.  <a href="classmets_1_1abstract__search.html#a9c57b09ce6efdb9c3dfc47bb1a38efe9">更多...</a><br /></td></tr>
<tr class="separator:a9c57b09ce6efdb9c3dfc47bb1a38efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2a0764914a1be2c4e06b9120c9fa7bd"><td class="memItemLeft" align="right" valign="top"><a id="ac2a0764914a1be2c4e06b9120c9fa7bd"></a>
const <a class="el" href="classmets_1_1solution__recorder.html">solution_recorder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#ac2a0764914a1be2c4e06b9120c9fa7bd">recorder</a> () const</td></tr>
<tr class="memdesc:ac2a0764914a1be2c4e06b9120c9fa7bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">The solution recorder instance. <br /></td></tr>
<tr class="separator:ac2a0764914a1be2c4e06b9120c9fa7bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81d584dbf1eaf56dc5e122a16abedf7d"><td class="memItemLeft" align="right" valign="top"><a id="a81d584dbf1eaf56dc5e122a16abedf7d"></a>
const <a class="el" href="classmets_1_1feasible__solution.html">feasible_solution</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a81d584dbf1eaf56dc5e122a16abedf7d">working</a> () const</td></tr>
<tr class="memdesc:a81d584dbf1eaf56dc5e122a16abedf7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The current working solution. <br /></td></tr>
<tr class="separator:a81d584dbf1eaf56dc5e122a16abedf7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5af44f66b46c50a7eb984fa48a413a3"><td class="memItemLeft" align="right" valign="top"><a id="ab5af44f66b46c50a7eb984fa48a413a3"></a>
<a class="el" href="classmets_1_1feasible__solution.html">feasible_solution</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>working</b> ()</td></tr>
<tr class="separator:ab5af44f66b46c50a7eb984fa48a413a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acadceab7cdd6c7e6bfc108acb56f3831"><td class="memItemLeft" align="right" valign="top"><a id="acadceab7cdd6c7e6bfc108acb56f3831"></a>
const <a class="el" href="classmets_1_1move.html">move</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#acadceab7cdd6c7e6bfc108acb56f3831">current_move</a> () const</td></tr>
<tr class="memdesc:acadceab7cdd6c7e6bfc108acb56f3831"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last move made <br /></td></tr>
<tr class="separator:acadceab7cdd6c7e6bfc108acb56f3831"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3344b3a27baf680da3d084aa5916374"><td class="memItemLeft" align="right" valign="top"><a id="ab3344b3a27baf680da3d084aa5916374"></a>
<a class="el" href="classmets_1_1move.html">move</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#ab3344b3a27baf680da3d084aa5916374">current_move</a> ()</td></tr>
<tr class="memdesc:ab3344b3a27baf680da3d084aa5916374"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last move made <br /></td></tr>
<tr class="separator:ab3344b3a27baf680da3d084aa5916374"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabfba800289490b7b6d10f49c60761af"><td class="memItemLeft" align="right" valign="top"><a id="aabfba800289490b7b6d10f49c60761af"></a>
const move_manager_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#aabfba800289490b7b6d10f49c60761af">move_manager</a> () const</td></tr>
<tr class="memdesc:aabfba800289490b7b6d10f49c60761af"><td class="mdescLeft">&#160;</td><td class="mdescRight">The move manager used by this search <br /></td></tr>
<tr class="separator:aabfba800289490b7b6d10f49c60761af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45c11083e68c7c1f3cad2db072cb3b29"><td class="memItemLeft" align="right" valign="top"><a id="a45c11083e68c7c1f3cad2db072cb3b29"></a>
move_manager_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a45c11083e68c7c1f3cad2db072cb3b29">move_manager</a> ()</td></tr>
<tr class="memdesc:a45c11083e68c7c1f3cad2db072cb3b29"><td class="mdescLeft">&#160;</td><td class="mdescRight">The move manager used by this search <br /></td></tr>
<tr class="separator:a45c11083e68c7c1f3cad2db072cb3b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34d5a51aa2185952505cf9c22b2bbc68"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1abstract__search.html#a34d5a51aa2185952505cf9c22b2bbc68">step</a> () const</td></tr>
<tr class="memdesc:a34d5a51aa2185952505cf9c22b2bbc68"><td class="mdescLeft">&#160;</td><td class="mdescRight">The current step of the algorithm (to be used by the observers).  <a href="classmets_1_1abstract__search.html#a34d5a51aa2185952505cf9c22b2bbc68">更多...</a><br /></td></tr>
<tr class="separator:a34d5a51aa2185952505cf9c22b2bbc68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmets_1_1subject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classmets_1_1subject')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classmets_1_1subject.html">mets::subject&lt; abstract_search&lt; move_manager_type &gt; &gt;</a></td></tr>
<tr class="memitem:a580c481db07f883261c0a24f0f201067 inherit pub_methods_classmets_1_1subject"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1subject.html#a580c481db07f883261c0a24f0f201067">attach</a> (<a class="el" href="classmets_1_1observer.html">observer</a>&lt; <a class="el" href="classmets_1_1abstract__search.html">abstract_search</a>&lt; move_manager_type &gt; &gt; &amp;o)</td></tr>
<tr class="memdesc:a580c481db07f883261c0a24f0f201067 inherit pub_methods_classmets_1_1subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attach a new observer to this subject.  <a href="classmets_1_1subject.html#a580c481db07f883261c0a24f0f201067">更多...</a><br /></td></tr>
<tr class="separator:a580c481db07f883261c0a24f0f201067 inherit pub_methods_classmets_1_1subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6b5055d74cb5671e46bb57a4109cf3a inherit pub_methods_classmets_1_1subject"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1subject.html#af6b5055d74cb5671e46bb57a4109cf3a">detach</a> (<a class="el" href="classmets_1_1observer.html">observer</a>&lt; <a class="el" href="classmets_1_1abstract__search.html">abstract_search</a>&lt; move_manager_type &gt; &gt; &amp;o)</td></tr>
<tr class="memdesc:af6b5055d74cb5671e46bb57a4109cf3a inherit pub_methods_classmets_1_1subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detach a new observer to this subject.  <a href="classmets_1_1subject.html#af6b5055d74cb5671e46bb57a4109cf3a">更多...</a><br /></td></tr>
<tr class="separator:af6b5055d74cb5671e46bb57a4109cf3a inherit pub_methods_classmets_1_1subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a604a3c6cb19a470779170e29528f3e83 inherit pub_methods_classmets_1_1subject"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmets_1_1subject.html#a604a3c6cb19a470779170e29528f3e83">notify</a> ()</td></tr>
<tr class="memdesc:a604a3c6cb19a470779170e29528f3e83 inherit pub_methods_classmets_1_1subject"><td class="mdescLeft">&#160;</td><td class="mdescRight">Notify all attached observers.  <a href="classmets_1_1subject.html#a604a3c6cb19a470779170e29528f3e83">更多...</a><br /></td></tr>
<tr class="separator:a604a3c6cb19a470779170e29528f3e83 inherit pub_methods_classmets_1_1subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:a0e83fc9a38ebb0e43a01e39a9f355571"><td class="memItemLeft" align="right" valign="top"><a id="a0e83fc9a38ebb0e43a01e39a9f355571"></a>
<a class="el" href="classmets_1_1solution__recorder.html">solution_recorder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>solution_recorder_m</b></td></tr>
<tr class="separator:a0e83fc9a38ebb0e43a01e39a9f355571"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c4dca8f8eb5c44b6a82850a1c2877c6"><td class="memItemLeft" align="right" valign="top"><a id="a5c4dca8f8eb5c44b6a82850a1c2877c6"></a>
<a class="el" href="classmets_1_1feasible__solution.html">feasible_solution</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>working_solution_m</b></td></tr>
<tr class="separator:a5c4dca8f8eb5c44b6a82850a1c2877c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21b7cc1546cea204ec302745a2414d3b"><td class="memItemLeft" align="right" valign="top"><a id="a21b7cc1546cea204ec302745a2414d3b"></a>
move_manager_type &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>moves_m</b></td></tr>
<tr class="separator:a21b7cc1546cea204ec302745a2414d3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a030ba3ca63ea155fc4f70972b1134560"><td class="memItemLeft" align="right" valign="top"><a id="a030ba3ca63ea155fc4f70972b1134560"></a>
move_manager_type::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>current_move_m</b></td></tr>
<tr class="separator:a030ba3ca63ea155fc4f70972b1134560"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac30e04104d2803c16bfc5ff905ec9d55"><td class="memItemLeft" align="right" valign="top"><a id="ac30e04104d2803c16bfc5ff905ec9d55"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>step_m</b></td></tr>
<tr class="separator:ac30e04104d2803c16bfc5ff905ec9d55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmets_1_1subject"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classmets_1_1subject')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classmets_1_1subject.html">mets::subject&lt; abstract_search&lt; move_manager_type &gt; &gt;</a></td></tr>
<tr class="memitem:a01924f78859ce56ff0448030e81166e0 inherit pro_attribs_classmets_1_1subject"><td class="memItemLeft" align="right" valign="top"><a id="a01924f78859ce56ff0448030e81166e0"></a>
std::set&lt; <a class="el" href="classmets_1_1observer.html">observer</a>&lt; <a class="el" href="classmets_1_1abstract__search.html">abstract_search</a>&lt; move_manager_type &gt; &gt; * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>observers_m</b></td></tr>
<tr class="separator:a01924f78859ce56ff0448030e81166e0 inherit pro_attribs_classmets_1_1subject"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename move_manager_type&gt;<br />
class mets::abstract_search&lt; move_manager_type &gt;</h3>

<p>An abstract search. </p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="classmets_1_1tabu__search.html" title="Tabu Search algorithm.">mets::tabu_search</a>, <a class="el" href="classmets_1_1simulated__annealing.html" title="Search by Simulated Annealing.">mets::simulated_annealing</a>, <a class="el" href="classmets_1_1local__search.html" title="Local search algorithm.">mets::local_search</a> </dd></dl>
</div><h2 class="groupheader">成员枚举类型说明</h2>
<a id="add8e7e7b063145361775a3b3280a7f13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add8e7e7b063145361775a3b3280a7f13">&#9670;&nbsp;</a></span>anonymous enum</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename move_manager_type &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="add8e7e7b063145361775a3b3280a7f13a97ca1cddb103101df3f5efd6afa909a3"></a>MOVE_MADE&#160;</td><td class="fielddoc"><p>We just made a move. </p>
</td></tr>
<tr><td class="fieldname"><a id="add8e7e7b063145361775a3b3280a7f13a097dfcc9c9fd4a57815225d689ccd65b"></a>IMPROVEMENT_MADE&#160;</td><td class="fielddoc"><p>Our solution_recorder_chain object reported an improvement </p>
</td></tr>
<tr><td class="fieldname"><a id="add8e7e7b063145361775a3b3280a7f13a89508708b3905bfddc4dc4099cfb5eff"></a>ITERATION_BEGIN&#160;</td><td class="fielddoc"><p>We are about to start a new iteration </p>
</td></tr>
<tr><td class="fieldname"><a id="add8e7e7b063145361775a3b3280a7f13a1f828a6d9da2b4b791e4467402690a02"></a>ITERATION_END&#160;</td><td class="fielddoc"><p>We have done the iteration </p>
</td></tr>
<tr><td class="fieldname"><a id="add8e7e7b063145361775a3b3280a7f13a76e99386020b09218bc569b6c597548d"></a>LAST&#160;</td><td class="fielddoc"><p>Placeholer for next values </p>
</td></tr>
</table>
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;         {</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <a class="code" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a97ca1cddb103101df3f5efd6afa909a3">MOVE_MADE</a> = 0,  </div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <a class="code" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a097dfcc9c9fd4a57815225d689ccd65b">IMPROVEMENT_MADE</a>,</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <a class="code" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a89508708b3905bfddc4dc4099cfb5eff">ITERATION_BEGIN</a>,</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;      <a class="code" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a1f828a6d9da2b4b791e4467402690a02">ITERATION_END</a>,</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      <a class="code" href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a76e99386020b09218bc569b6c597548d">LAST</a></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    };</div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_add8e7e7b063145361775a3b3280a7f13a097dfcc9c9fd4a57815225d689ccd65b"><div class="ttname"><a href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a097dfcc9c9fd4a57815225d689ccd65b">mets::abstract_search::IMPROVEMENT_MADE</a></div><div class="ttdeci">@ IMPROVEMENT_MADE</div><div class="ttdoc">Our solution_recorder_chain object reported an improvement</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:120</div></div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_add8e7e7b063145361775a3b3280a7f13a1f828a6d9da2b4b791e4467402690a02"><div class="ttname"><a href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a1f828a6d9da2b4b791e4467402690a02">mets::abstract_search::ITERATION_END</a></div><div class="ttdeci">@ ITERATION_END</div><div class="ttdoc">We have done the iteration</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:124</div></div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_add8e7e7b063145361775a3b3280a7f13a76e99386020b09218bc569b6c597548d"><div class="ttname"><a href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a76e99386020b09218bc569b6c597548d">mets::abstract_search::LAST</a></div><div class="ttdeci">@ LAST</div><div class="ttdoc">Placeholer for next values</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:126</div></div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_add8e7e7b063145361775a3b3280a7f13a89508708b3905bfddc4dc4099cfb5eff"><div class="ttname"><a href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a89508708b3905bfddc4dc4099cfb5eff">mets::abstract_search::ITERATION_BEGIN</a></div><div class="ttdeci">@ ITERATION_BEGIN</div><div class="ttdoc">We are about to start a new iteration</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:122</div></div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_add8e7e7b063145361775a3b3280a7f13a97ca1cddb103101df3f5efd6afa909a3"><div class="ttname"><a href="classmets_1_1abstract__search.html#add8e7e7b063145361775a3b3280a7f13a97ca1cddb103101df3f5efd6afa909a3">mets::abstract_search::MOVE_MADE</a></div><div class="ttdeci">@ MOVE_MADE</div><div class="ttdoc">We just made a move.</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:118</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">构造及析构函数说明</h2>
<a id="ac8b0d53e92a4c7510f28d35a8d0153dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8b0d53e92a4c7510f28d35a8d0153dd">&#9670;&nbsp;</a></span>abstract_search()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename move_manager_type &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmets_1_1abstract__search.html">mets::abstract_search</a>&lt; move_manager_type &gt;::<a class="el" href="classmets_1_1abstract__search.html">abstract_search</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmets_1_1feasible__solution.html">feasible_solution</a> &amp;&#160;</td>
          <td class="paramname"><em>working</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmets_1_1solution__recorder.html">solution_recorder</a> &amp;&#160;</td>
          <td class="paramname"><em>recorder</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">move_manager_type &amp;&#160;</td>
          <td class="paramname"><em>moveman</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set some common values needed for neighborhood based metaheuristics. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">working</td><td>The starting point solution (this will be modified during search as the working solution)</td></tr>
    <tr><td class="paramname">recorder</td><td>A solution recorder instance used to record the best solution found</td></tr>
    <tr><td class="paramname">moveman</td><td>A problem specific implementation of the move_manager_type used to generate the neighborhood. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;      : subject&lt;abstract_search&lt;move_manager_type&gt; &gt;(), </div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    solution_recorder_m(<a class="code" href="classmets_1_1abstract__search.html#ac2a0764914a1be2c4e06b9120c9fa7bd">recorder</a>),</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    working_solution_m(<a class="code" href="classmets_1_1abstract__search.html#a81d584dbf1eaf56dc5e122a16abedf7d">working</a>),</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    moves_m(moveman),</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    current_move_m(),</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    step_m()</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    { }</div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_a81d584dbf1eaf56dc5e122a16abedf7d"><div class="ttname"><a href="classmets_1_1abstract__search.html#a81d584dbf1eaf56dc5e122a16abedf7d">mets::abstract_search::working</a></div><div class="ttdeci">const feasible_solution &amp; working() const</div><div class="ttdoc">The current working solution.</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:146</div></div>
<div class="ttc" id="aclassmets_1_1abstract__search_html_ac2a0764914a1be2c4e06b9120c9fa7bd"><div class="ttname"><a href="classmets_1_1abstract__search.html#ac2a0764914a1be2c4e06b9120c9fa7bd">mets::abstract_search::recorder</a></div><div class="ttdeci">const solution_recorder &amp; recorder() const</div><div class="ttdoc">The solution recorder instance.</div><div class="ttdef"><b>Definition:</b> abstract-search.hh:141</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a9c57b09ce6efdb9c3dfc47bb1a38efe9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c57b09ce6efdb9c3dfc47bb1a38efe9">&#9670;&nbsp;</a></span>search()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename move_manager_type &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void <a class="el" href="classmets_1_1abstract__search.html">mets::abstract_search</a>&lt; move_manager_type &gt;::search </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
        <tr>
          <td align="right">throw </td><td>(</td><td colspan="2"><a class="el" href="classmets_1_1no__moves__error.html">no_moves_error</a></td>
        </tr>
        <tr>
          <td align="right"></td><td>)</td><td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method starts the search. </p>
<p>Remember that this is a minimization.</p>
<p>An exception <a class="el" href="classmets_1_1no__moves__error.html" title="Exception risen when some algorithm has no more moves to make.">mets::no_moves_error</a> can be risen when no move is possible. </p>

<p>在 <a class="el" href="classmets_1_1tabu__search.html#a1ab0fb202ee3171b5537b501496379a7">mets::tabu_search&lt; move_manager_type &gt;</a>, <a class="el" href="classmets_1_1simulated__annealing.html#ac8303c4604e82f142cb888b02ba32048">mets::simulated_annealing&lt; move_manager_type &gt;</a> , 以及 <a class="el" href="classmets_1_1local__search.html#a5d214923f02f84ab2f9e7db71bef4b44">mets::local_search&lt; move_manager_type &gt;</a> 内被实现.</p>

</div>
</div>
<a id="a34d5a51aa2185952505cf9c22b2bbc68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34d5a51aa2185952505cf9c22b2bbc68">&#9670;&nbsp;</a></span>step()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename move_manager_type &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classmets_1_1abstract__search.html">mets::abstract_search</a>&lt; move_manager_type &gt;::step </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The current step of the algorithm (to be used by the observers). </p>
<p>When you implement a new type of search you should set step_m protected variable to the status of the algorithm (0 = "MOVE_MADE", 1 = "IMPROVEMENT_MADE", etc.). </p>
<div class="fragment"><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    { <span class="keywordflow">return</span> step_m; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>recognition/include/pcl/recognition/3rdparty/metslib/<a class="el" href="abstract-search_8hh_source.html">abstract-search.hh</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>mets</b></li><li class="navelem"><a class="el" href="classmets_1_1abstract__search.html">abstract_search</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
